package com.dkm.orproject.dkmoa.service.flow;

import com.dkm.orproject.dkmoa.domain.OaPersonnel;
import com.dkm.orproject.dkmoa.domain.OaVacateFlow;

import java.util.List;

/**
 *  @ClassName : OaVacateFlowSerivce  //类名
 *  @Description : 请假流程Service  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2020-11-03 10:10  //时间
 */

public interface OaVacateFlowService {
    /**
     * 根据id 删除
     * @param pkVacateId 请假流程id
     * @return 成功的行数
     */
    int deleteById(Long pkVacateId);
    /**
     * 增加请假流程
     * @param record 请假流程模型
     * @param  personnel 操作人
     * @return 成功的行数
     */
    int insertSelective(OaVacateFlow record, OaPersonnel personnel);

    /**
     * 部门主管审核
     * @param pkVacateId 请假流程id
     * @param personnel 操作人
     * @return 成功的数量
     */
    int departmentPass(Long pkVacateId, OaPersonnel personnel,String departmentOpinion);
    /**
     * 部门主管审核不通过
     * @param pkVacateId 请假流程模型
     * @param personnel 操作人
     * @param formReason 不要通过原因
     * @return 成功的数量
     */
    int departmentNoPass(Long pkVacateId, OaPersonnel personnel,String formReason);
    /**
     * 行政人事审核(通过)
     * @param pkVacateId 请假流程模型
     * @param personnel 操作人
     * @return 成功的数量
     */
    int adminPass(Long pkVacateId, OaPersonnel personnel,String personnelOpinion);
    /**
     * 行政人事审核不通过
     * @param pkVacateId 请假流程模型
     * @param personnel 操作人
     * @param formReason 不通过的原因
     * @return 成功的数量
     */
    int adminNoPass(Long pkVacateId, OaPersonnel personnel,String formReason);
    /**
     * 总经理审核
     * @param pkVacateId 请假流程模型
     * @param personnel 操作人
     * @return 成功的数量
     */
    int managerPass(Long pkVacateId, OaPersonnel personnel,String managerOpinion);

    /**
     * 总经理审核
     * @param pkVacateId 请假流程模型
     * @param personnel 操作人
     * @param  formReason 不通过的原因
     * @return 成功的数量
     */
    int managerNoPass(Long pkVacateId, OaPersonnel personnel,String formReason);
    /**
     * 根据id 查询
     * @param pkVacateId 请假流程id
     * @return 请假流程模型
     */
    OaVacateFlow selectById(Long pkVacateId);

    /**
     * 更新请假流程
     * @param record 请假流程模型
     * @return 成功的行数
     */
    int updateById(OaVacateFlow record);

    /**
     * 查询所有请假流程
     * @param flow 请假流程
     * @param startDate 开始月份
     * @param endDate 结束月份
     * @return 请假流程
     */
    List<OaVacateFlow> findAll( OaVacateFlow flow,Integer limit,Integer page, String startDate, String endDate);
    /**
     * 统计所有请假流程
     * @param flow 请假流程
     * @param startDate 开始月份
     * @param endDate 结束月份
     * @return 请假流程
     */
    Long rowCount( OaVacateFlow flow,String startDate, String endDate);
    /**
     * 批量删除
     * @param list 请假流程Id
     * @return 删除的数量
     */
    int deleteAll(List<Long> list);
    /**
     * 批量查询
     * @param list 薪资调整id的集合
     * @return 信息的集合
     */
    List<OaVacateFlow> selectAll(List<Long> list);
}
